(deftemplate intrebare
    (slot stringIntrebare)
    (slot raspuns)
)
(deftemplate facultate
    (multislot nume)
)

(assert (intrebare (stringIntrebare nil)(raspuns nil)))
(assert (facultate (nume nil)))

(defrule q
    (declare (salience 100))
	(intrebare (stringIntrebare nil)(raspuns nil))
	=>
	(printout t "Vrei sa mergi la facultate? (DA/NU)" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Vrei sa mergi la facultate?")(raspuns ?r)))
)
(defrule r1
    (declare (salience 99))
	(intrebare (stringIntrebare "Vrei sa mergi la facultate?")(raspuns NU))
	=>
	(printout t "Succes in cariera pe care o vei alege." crlf)
)
(defrule q0
    (declare (salience 78))
	(intrebare (stringIntrebare "Vrei sa mergi la facultate?")(raspuns DA))
	=>
	(printout t "Ce nota ai la Matematica?" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Ce nota ai la Matematica?")(raspuns ?r)))
)
(defrule q1
    (declare (salience 99))
	(intrebare (stringIntrebare "Ce nota ai la Matematica?")(raspuns ?x & : (>= ?x 8)))
	=>
	(printout t "Ce nota ai la Informatica?" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Ce nota ai la Informatica?")(raspuns ?r)))
)
(defrule q2
    (declare (salience 78))
	(intrebare (stringIntrebare "Ce nota ai la Matematica?")(raspuns ?x & : (< ?x 8)))
	=>
	(printout t "Ce nota ai la Limba si literatura romana?" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Ce nota ai la Limba si literatura romana?")(raspuns ?r)))
)
(defrule q3
    (declare (salience 99))
	(intrebare (stringIntrebare "Ce nota ai la Informatica?")(raspuns ?x & : (>= ?x 8)))
	=>
	(printout t "Ce nota ai la Fizica?" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Ce nota ai la Fizica?")(raspuns ?r)))
)
(defrule q4
    (declare (salience 78))
	(intrebare (stringIntrebare "Ce nota ai la Informatica?")(raspuns ?x & : (< ?x 8)))
	=>
	(printout t "Poate ar trebui sa alegi facultatea de Economie si Administrare a Afacerilor." crlf)
)
(defrule r2
    (declare (salience 99))
	(intrebare (stringIntrebare "Ce nota ai la Fizica?")(raspuns ?x & : (>= ?x 8)))
	=>
	(printout t "Poate ar trebui sa alegi facultatea de Intormatica, Politehnica." crlf)
)
(defrule r3
    (declare (salience 78))
	(intrebare (stringIntrebare "Ce nota ai la Fizica?")(raspuns ?x & : (< ?x 8)))
	=>
	(printout t "Ce nota ai la Chimie? " crlf)
    (bind ?r (read))
	(assert (intrebare (stringIntrebare "Ce nota ai la Chimie?")(raspuns ?r)))
)
(defrule q5
    (declare (salience 99))
	(intrebare (stringIntrebare "Ce nota ai la Limba si literatura romana?")(raspuns ?x & : (>= ?x 8)))
	=>
	(printout t "Ce nota ai la limbile straine?" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Ce nota ai la limbile straine?")(raspuns ?r)))
)
(defrule q7
    (declare (salience 99))
	(intrebare (stringIntrebare "Ce nota ai la Limba si literatura romana?")(raspuns ?x & : (< ?x 8)))
	=>
	(printout t "Ce nota ai la Biologie?" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Ce nota ai la Biologie?")(raspuns ?r)))
)
(defrule q6
    (declare (salience 78))
	(intrebare (stringIntrebare "Ce nota ai la Biologie?")(raspuns ?x & : (< ?x 8)))
	=>
	(printout t "Ce nota ai la Fizica?" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Ce nota ai la Fizica?")(raspuns ?r)))
)
(defrule r6
    (declare (salience 99))
	(intrebare (stringIntrebare "Ce nota ai la limbile straine?")(raspuns ?x & : (>= ?x 8)))
	=>
	(printout t "Poate ar trebui sa alegi facultatea de Litere." crlf)
)
(defrule r7
    (declare (salience 78))
	(intrebare (stringIntrebare "Ce nota ai la limbile straine?")(raspuns ?x & : (< ?x 8)))
	=>
	(printout t "Poate ar trebui sa alegi facultatea de Stiinte Politice, Stiinte ale Comunicarii si Filosofie." crlf)
)
(defrule r8
    (declare (salience 99))
	(intrebare (stringIntrebare "Ce nota ai la Biologie?")(raspuns ?x & : (>= ?x 8)))
	=>
	(printout t "Poate ar trebui sa alegi facultatea de Medicina si Farmacie." crlf)
)
(defrule r9
    (declare (salience 78))
	(intrebare (stringIntrebare "Ce nota ai la Biologie?")(raspuns ?x & : (< ?x 8)))
	=>
	(printout t "Poate ar trebui sa alegi facultatea de Biologie, Geografie si Chimie." crlf)
)
(defrule r10
    (declare (salience 99))
	(intrebare (stringIntrebare "Ce nota ai la Chimie?")(raspuns ?x & : (>= ?x 8)))
	=>
	(printout t "Poate ar trebui sa alegi facultatea de Chimie." crlf)
)
(defrule r11
    (declare (salience 78))
	(intrebare (stringIntrebare "Ce nota ai la Chimie?")(raspuns ?x & : (< ?x 8)))
	=>
	(printout t "Poate ar fi mai bine sa nu mergi la facultate, deoarece nu ti-a placut nici o materie de-a lungul liceului." crlf)
)

(facts)
(agenda)
(run)